package com.graduation.springbootinit.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.graduation.springbootinit.model.entity.ShopPart.Conversation;
import com.graduation.springbootinit.model.entity.ShopPart.Message;

import java.util.List;

public interface ConversationService extends IService<Conversation> {
    /**
     * 获取用户的对话列表
     * @param userId 用户ID
     * @param isStore 是否是商铺身份
     * @return 对话列表
     */
    List<Conversation> getUserConversations(Long userId, boolean isStore);
    
    /**
     * 创建或获取对话，并填充消息详情
     * @param userId 用户ID
     * @param userName 用户名
     * @param storeId 商铺ID
     * @param storeName 商铺名
     * @return 对话信息（包含消息详情）
     */
    Conversation getOrCreateConversation(Long userId, String userName, Long storeId, String storeName);
    
    /**
     * 更新对话的最后一条消息
     * @param conversationId 对话ID
     * @param lastMessage 最后一条消息
     * @param senderType 发送者类型（0-用户，1-商铺）
     */
    void updateLastMessage(Long conversationId, String lastMessage, Integer senderType);
    
    /**
     * 更新未读消息计数
     * @param conversationId 对话ID
     * @param isStore 是否是商铺身份
     */
    void incrementUnreadCount(Long conversationId, boolean isStore);
    
    /**
     * 标记对话已读
     * @param conversationId 对话ID
     * @param isStore 是否是商铺身份
     */
    void markAsRead(Long conversationId, boolean isStore);

    /**
     * 发送消息并更新会话状态
     */
    Message sendMessage(Long conversationId, Long senderId, Integer senderType, String content, Integer type);
}